package com.ruoyi.memoryleak;//package com.ruoyi.web.controller.memoryleak;
//
//import com.github.benmanes.caffeine.cache.Cache;
//import com.github.benmanes.caffeine.cache.Caffeine;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import org.util.concurrent.ThreadLocalRandom;
//
//@RestController
//public class OOMController2 {
//
//    // 创建一个没有大小限制、没有过期时间的缓存（错误示范！）
//    private final Cache<String, String> unboundedCache = Caffeine.newBuilder().build();
//
//    /**
//     * 模拟缓存击穿或无限制缓存
//     * 调用方式: http://localhost:8080/cache?key=abc
//     */
//    @GetMapping("/cache")
//    public String fillCache(@RequestParam String key) {
//        // 模拟生成一个较大的值，例如缓存一个大型JSON字符串或序列化对象
//        String largeValue = generateLargeString(1024 * 500); // 生成500KB的字符串
//
//        // 将不同的key和巨大的value放入缓存
//        String cacheKey = key + ThreadLocalRandom.current().nextInt(10000);
//        unboundedCache.put(cacheKey, largeValue);
//
//        return "Cached large value under key: " + cacheKey + ". Estimated size: " + unboundedCache.estimatedSize();
//    }
//
//    private String generateLargeString(int targetSize) {
//        StringBuilder builder = new StringBuilder(targetSize);
//        for (int i = 0; i < targetSize; i++) {
//            builder.append('a');
//        }
//        return builder.toString();
//    }
//}
